const fs = require('fs'); // 文件

const serverConfig = require('config/server-config'); // 服务器配置

const filePrefixPath = serverConfig.dirname + '/file/'; // 文件存放地址
const filePrefixRequest = serverConfig.host + ':' + serverConfig.port + '/file/'; // 文件请求前缀

const service = {};

/**
 * @param {String} folder 文件夹
 * @param {String} pathTemp 中间件文件临时存放位置
 * @param {String} filename 文件目标位置
 * @param {Function} callback 回调函数
 * 上传文件
 */
service.uploadFile = (folder, pathTemp, filename, callback) => {
  // 保存文件到指定位置
  let saveFile = () => {
    var source = fs.createReadStream(pathTemp);
    var dest = fs.createWriteStream(filePrefixPath + folder +  filename);
    source.pipe(dest);
    // 异常
    source.on('error', (err) => {
      fs.unlinkSync(pathTemp); // 删除临时文件
      callback(err, null);
    });
    // 文件操作结束后响应给客户端
    source.on('end', () => {
      fs.unlinkSync(pathTemp); // 删除临时文件
      callback(null, '/' + folder + filename);
    });
  }
  // 判断文件夹是否存在
  fs.exists(filePrefixPath + folder, (exists) => {
    if (!exists) {
      fs.mkdirSync(filePrefixPath + folder); // 创建文件
    }
    saveFile(); // 保存文件
  })
}

module.exports = service;